home *** CD-ROM | disk | FTP | other *** search
- /*
- File: ClkPrpAc.cpp
-
- Contains: Implemementation of ClockPropAccessor class.
-
- Owned by: Jon Pugh
-
- Copyright: © 1993 - 1995 by Apple Computer, Inc., all rights reserved.
-
- Change History (most recent first):
-
- <2> 6/15/95 TJ Added Includes for compiling with out PCH
- <1> 6/13/95 JP first checked in
-
- To Do:
- */
-
- #ifndef _CLKPRPAC_
- #include "ClkPrpAc.h"
- #endif
-
- #ifndef __APPLEEVENTS_
- #include <AppleEvents.h>
- #endif
-
- #ifndef __AEREGISTRY__
- #include <AERegistry.h>
- #endif
-
- #ifndef __ASREGISTRY__
- #include <ASRegistry.h>
- #endif
-
- #ifndef _CLOCKPRT_
- #include "ClockPrt.h"
- #endif
-
- #ifndef _CLOCKDEF_
- #include "ClockDef.h"
- #endif
-
- #ifndef _CLOCKGBL_
- #include "ClockGbl.h"
- #endif
-
- #ifndef _ODDEBUG_
- #include "ODDebug.h"
- #endif
-
- #ifndef _EXCEPT_
- #include "Except.h"
- #endif
-
- #ifndef __TEXTUTILS__
- #include <TextUtils.h>
- #endif
-
-
- #pragma segment ClkPrpAc
-
- //==============================================================================
- // Constants
- //==============================================================================
-
- //==============================================================================
- // Scalar Types
- //==============================================================================
-
- //==============================================================================
- // Local Classes
- //==============================================================================
-
- //==============================================================================
- // Global Variables
- //==============================================================================
-
- //==============================================================================
- // Function Prototype
- //==============================================================================
-
- //==============================================================================
- // ClockPropAccessor
- //==============================================================================
-
- //------------------------------------------------------------------------------
- // ClockPropAccessor::ClockPropAccessor
- //------------------------------------------------------------------------------
-
- ClockPropAccessor::ClockPropAccessor(DescType property, ClockPart* clock)
- {
- fProperty = property;
- fClock = clock;
- }
-
-
- //------------------------------------------------------------------------------
- // ClockPropAccessor::SetData
- //------------------------------------------------------------------------------
-
- void ClockPropAccessor::SetData(AEDesc* data)
- {
- Environment* ev = somGetGlobalEnvironment();
-
- switch(fProperty)
- {
- case pFont:
- {
- ODPlatformMenu fontMenu;
- AEDesc textDesc;
- ODSShort fontNum = fClock->GetFont();
- Str255 fontName = "\p";
-
- fontMenu = fClock->GetMenuBar()->GetMenu(ev, kClock_FontMenuID);
- GetFontName(fontNum, fontName );
- CheckMarkMenu(fontMenu, fontName, kODFalse );
-
- THROW_IF_ERROR( AECoerceDesc(data, typeChar, &textDesc) );
-
- fontName[0] = GetHandleSize(textDesc.dataHandle);
- BlockMoveData(*textDesc.dataHandle, &fontName[1], fontName[0]);
- CheckMarkMenu(fontMenu, fontName , kODTrue );
- fClock->OutlineSizeMenu(ev);
- GetFNum( fontName, &fontNum );
- fClock->SetFont(ev, fontNum );
- fClock->AdjustDisplayFrames(ev);
- THROW_IF_ERROR( AEDisposeDesc(&textDesc) );
- break;
- }
-
- case pPointSize:
- {
- ODPlatformMenu sizeMenu;
- AEDesc numDesc;
- ODULong fontSize;
- Str255 sizeStr;
-
- sizeMenu = fClock->GetMenuBar()->GetMenu(ev, kClock_SizeMenuID);
-
- fontSize = fClock->GetSize();
- NumToString( fontSize, sizeStr );
- CheckMarkMenu(sizeMenu, sizeStr, kODFalse );
-
- THROW_IF_ERROR( AECoerceDesc(data, typeInteger, &numDesc) );
-
- fontSize = **(ODULong**)numDesc.dataHandle;
- fClock->SetFontSize(ev, (ODSShort) fontSize );
- NumToString(fontSize, sizeStr );
- CheckMarkMenu(sizeMenu, sizeStr, kODTrue );
- //fClock->OutlineSizeMenu(ev);
- fClock->AdjustDisplayFrames(ev);
- THROW_IF_ERROR( AEDisposeDesc(&numDesc) );
- break;
- }
-
- case pTextStyles:
- {
- ODPlatformMenu styleMenu;
- DescType fontStyle;
- ODUByte style;
- Str255 styleStr;
-
- styleMenu = fClock->GetMenuBar()->GetMenu(ev, kClock_StyleMenuID);
-
- style = fClock->GetStyle();
- StyleToString(style, &styleStr);
- CheckMarkMenu(styleMenu, styleStr, kODFalse );
-
- fontStyle = **(DescType**)data->dataHandle;
- switch (fontStyle)
- {
- case kAEPlain: style = normal; break;
- case kAEBold: style = bold; break;
- case kAEItalic: style = italic; break;
- case kAEUnderline: style = underline; break;
- case kAEOutline: style = outline; break;
- case kAEShadow: style = shadow; break;
- case kAECondensed: style = condense; break;
- case kAEExpanded: style = extend; break;
- default:
- THROW(paramErr);
- }
- fClock->SetFontStyle(ev, style);
- StyleToString(style, &styleStr);
- CheckMarkMenu(styleMenu, styleStr, kODTrue );
- fClock->AdjustDisplayFrames(ev);
- break;
- }
-
- case pDisplayMode:
- {
- DescType theMode;
- ODBoolean isAnalog;
-
- theMode = **(DescType**)data->dataHandle;
- switch (theMode)
- {
- case kAEAnalogClock: isAnalog = kODTrue; break;
- case kAEDigitalClock: isAnalog = kODFalse; break;
- default:
- THROW(paramErr);
- }
- fClock->SetAnalog(ev, isAnalog);
- fClock->AdjustDisplayFrames(ev);
- fClock->AdjustDialogs(ev);
- break;
- }
-
- case pASTime:
- {
- ODULong* time;
- AEDesc dateDesc;
-
- THROW_IF_ERROR( AECoerceDesc(data, cLongDateTime, &dateDesc) );
-
- time = (ODULong*) *dateDesc.dataHandle;
- SetDateTime(*(++time));
- fClock->AdjustDisplayFrames(ev);
- THROW_IF_ERROR( AEDisposeDesc(&dateDesc) );
- break;
- }
- default:
- THROW(errAENotModifiable);
- break;
- }
- } // ClockPropAccessor::SetData
-
-
- //------------------------------------------------------------------------------
- // ClockPropAccessor::GetData
- //------------------------------------------------------------------------------
-
- void ClockPropAccessor::GetData(AEDesc* objectData)
- {
- ODError result;
-
- switch(fProperty)
- {
- case pFont:
- {
- ODSShort font = fClock->GetFont();
- Str255 name = "\p";
-
- GetFontName(font, name);
- THROW_IF_ERROR(AECreateDesc(typeChar, (Ptr)&name[1], name[0],
- objectData));
- break;
- }
-
- case pPointSize:
- {
- ODSShort fontSize = fClock->GetSize();
- result = AECreateDesc(typeShortInteger, (Ptr)&fontSize, sizeof(fontSize),
- objectData);
- THROW_IF_ERROR(result);
- }
- break;
-
- case pTextStyles:
- {
- DescType fontStyle;
- ODUByte style = fClock->GetStyle();
- switch (style)
- {
- case normal: fontStyle = kAEPlain; break;
- case bold: fontStyle = kAEBold; break;
- case italic: fontStyle = kAEItalic; break;
- case underline: fontStyle = kAEUnderline; break;
- case outline: fontStyle = kAEOutline; break;
- case shadow: fontStyle = kAEShadow; break;
- case condense: fontStyle = kAECondensed; break;
- case extend: fontStyle = kAEExpanded; break;
- default:
- THROW(paramErr);
- }
- result = AECreateDesc(typeEnumerated, (Ptr) &fontStyle, sizeof(fontStyle),
- objectData);
- THROW_IF_ERROR(result);
- break;
- }
-
- case pDisplayMode:
- {
- DescType theMode = kAEDigitalClock;
-
- if (fClock->IsAnalog())
- theMode = kAEAnalogClock;
- result = AECreateDesc(typeEnumerated, (Ptr) &theMode, sizeof(theMode),
- objectData);
- THROW_IF_ERROR(result);
- break;
- }
-
- case pASTime:
- {
- ODULong time[2];
-
- time[0] = 0;
- GetDateTime(&time[1]);
- result = AECreateDesc(cLongDateTime, (Ptr) &time, sizeof(time), objectData);
- THROW_IF_ERROR(result);
- break;
- }
-
- default:
- THROW(errAENoSuchObject);
- break;
- }
- } // ClockPropAccessor::GetData
-
-
-
-